package com.app.biz.mapper;

import com.app.biz.domain.BizManufacturingPmiComparison;
import com.app.biz.domain.request.BizManufacturingPmiComparisonRequest;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 山东与全国制造业采购经理指数对比Mapper接口
 *
 * @author SangGuangCan
 * @date 2023-12-27
 */
public interface BizManufacturingPmiComparisonMapper {
    /**
     * 查询山东与全国制造业采购经理指数对比
     *
     * @param baseId 山东与全国制造业采购经理指数对比主键
     * @return 山东与全国制造业采购经理指数对比
     */
    public BizManufacturingPmiComparison selectBizManufacturingPmiComparisonByBaseId(String baseId);

    /**
     * 查询山东与全国制造业采购经理指数对比列表
     *
     * @param bizManufacturingPmiComparison 山东与全国制造业采购经理指数对比
     * @return 山东与全国制造业采购经理指数对比集合
     */
    public List<BizManufacturingPmiComparison> selectBizManufacturingPmiComparisonList(BizManufacturingPmiComparison bizManufacturingPmiComparison);

    /**
     * 新增山东与全国制造业采购经理指数对比
     *
     * @param bizManufacturingPmiComparison 山东与全国制造业采购经理指数对比
     * @return 结果
     */
    public int insertBizManufacturingPmiComparison(BizManufacturingPmiComparison bizManufacturingPmiComparison);

    /**
     * 修改山东与全国制造业采购经理指数对比
     *
     * @param bizManufacturingPmiComparison 山东与全国制造业采购经理指数对比
     * @return 结果
     */
    public int updateBizManufacturingPmiComparison(BizManufacturingPmiComparison bizManufacturingPmiComparison);

    /**
     * 删除山东与全国制造业采购经理指数对比
     *
     * @param baseId 山东与全国制造业采购经理指数对比主键
     * @return 结果
     */
    public int deleteBizManufacturingPmiComparisonByBaseId(String baseId);

    /**
     * <p>
     * 查询数据库中数据的日期(year_month字段)并进行去重复操作<br/>
     * 主要用于的是APP端左上角的日期过滤
     * </p>
     *
     * @return 日期的集合
     */
    List<String> getUniqueDatesFromDatabase();


    /**
     * 批量删除山东与全国制造业采购经理指数对比
     *
     * @param baseIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBizManufacturingPmiComparisonByBaseIds(String[] baseIds);

    /**
     * 批量导入山东与全国制造业采购经理指数对比
     * @param list 山东与全国制造业采购经理指数对比的数据
     */
    void batchInsertManufacturingPmiCompariso(@Param("list") List<BizManufacturingPmiComparison> list);

    /**
     * 查询当前月份到上一年月份的数据
     * @param bizManufacturingPmiComparisonRequest
     * @return
     */
    List<BizManufacturingPmiComparison> getDataOneYearBeforeSpecificDate(@Param("p") BizManufacturingPmiComparisonRequest bizManufacturingPmiComparisonRequest);

    /**
     * 查询数据库中最新日期
     * @return 数据库中最新的日期
     */
    @Select("select bmpc.`year_month` from biz_manufacturing_pmi_comparison as bmpc order by bmpc.`year_month` desc limit 1")
    String getLatestDateData();

    /**
     * <p>
     *     清空所有的山东与全国制造业采购经理指数对比数据
     * </p>
     * @return
     */
    @Delete("DELETE FROM biz_manufacturing_pmi_comparison")
    void clearAllTableData();

    List<BizManufacturingPmiComparison> selectBizManufacturingPmiComparisonAllData();

}
